{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## The TX-TL Toolbox in BioCRNpyler\n", "\n", "### A recreation of the original MATLAB TxTl Toolbox, as seen in [Singhal et al. 2020](https://www.biorxiv.org/content/10.1101/2020.08.05.237990v1)\n", "\n", "This tutorial shows how to use the EnergyTxTlExtract Mixture with a parameter file derived from the paper above. This Mixture is a simplification of the models used in the original toolbox. Notable changes include:\n", "1. Using only a single nucleotide species NTPs (instead of GTP, ATP, UTP, and CTP)\n", "2. A slightly different NTP regeneration Mechanism which explicitly incorporates the amount of fuel, 3PGA, put into the extract and metabolic leak of the extract.\n", "3. Degredation of RNA bound to ribosomes (which releases the ribosome).\n", "4. A modification of the Energy consumption reactions for Transcription and Translation so that there is only a single binding reaction.\n", "\n", "### The CRN displayed below shows the energy utilization process model" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/murray/Library/CloudStorage/Dropbox/macosx/src/biocrnpyler/biocrnpyler/core/parameter.py:678: UserWarning: parameter file contains no unit column! Please add a column named ['unit', 'units'].\n", " warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Species(N = 7) = {\n", " metabolite[amino_acids] (@ 30.0), \n", " found_key=(mech=initial concentration, partid=None, name=amino_acids).\n", " search_key=(mech=initial concentration, partid=, name=amino_acids).\n", "\n", " metabolite[Fuel_3PGA] (@ 30.0), \n", " found_key=(mech=initial concentration, partid=None, name=Fuel_3PGA).\n", " search_key=(mech=initial concentration, partid=, name=Fuel_3PGA).\n", "\n", " protein[RNAase] (@ 20.2), \n", " found_key=(mech=initial concentration, partid=None, name=RNAase).\n", " search_key=(mech=initial concentration, partid=, name=RNAase).\n", "\n", " metabolite[NTPs] (@ 5.0), \n", " found_key=(mech=initial concentration, partid=None, name=NTPs).\n", " search_key=(mech=initial concentration, partid=, name=NTPs).\n", "\n", " protein[Ribo] (@ 0.0273), \n", " found_key=(mech=initial concentration, partid=None, name=protein_Ribo).\n", " search_key=(mech=initial concentration, partid=, name=protein_Ribo).\n", "\n", " protein[RNAP] (@ 0.00933), \n", " found_key=(mech=initial concentration, partid=None, name=RNAP).\n", " search_key=(mech=initial concentration, partid=, name=RNAP).\n", "\n", " metabolite[NDPs] (@ 0), \n", "}\n", "\n", "Reactions (2) = [\n", "0. metabolite[Fuel_3PGA]+metabolite[NDPs] --> metabolite[NTPs]\n", " Kf=k_forward * metabolite_Fuel_3PGA * metabolite_NDPs\n", " k_forward=0.02\n", " found_key=(mech=one_step_pathway, partid=NTPs_production, name=k).\n", " search_key=(mech=one_step_pathway, partid=NTPs_production, name=k).\n", "\n", "1. metabolite[NTPs] --> metabolite[NDPs]\n", " Kf=k_forward * metabolite_NTPs\n", " k_forward=1.77e-05\n", " found_key=(mech=one_step_pathway, partid=NTPs_degradation, name=k).\n", " search_key=(mech=one_step_pathway, partid=NTPs_degradation, name=k).\n", "\n", "]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCf0lEQVR4nO3deXxU9b3/8fdkm+wJgayXSMJmy6opSoOURRREy5VKFUURhAduQEEuYEHR4AK4tlRuUasCvYrArwhai2wKUUtZEhYpcEUwAXpJjGyTfbLM+f3BzdwMSWAmy5kkvJ6PxzzMWeaczzljMm++3+85x2IYhiEAAACT+Hi7AAAAcHUhfAAAAFMRPgAAgKkIHwAAwFSEDwAAYCrCBwAAMBXhAwAAmIrwAQAATOXn7QIu5XA4dPr0aYWFhclisXi7HAAA4AbDMFRQUKCEhAT5+Fy+baPZhY/Tp08rMTHR22UAAIB6OHXqlNq3b3/ZdZpd+AgLC5N0sfjw8HAvVwMAANyRn5+vxMRE5/f45TS78FHV1RIeHk74AACghXFnyAQDTgEAgKkIHwAAwFSEDwAAYCrCBwAAMBXhAwAAmIrwAQAATEX4AAAApiJ8AAAAUxE+AACAqTwKH0uXLlWvXr2cdx9NTU3VZ5995lxuGIbS0tKUkJCgoKAgDRo0SIcOHWr0ogEAQMvlUfho3769Fi1apIyMDGVkZOjmm2/WnXfe6QwYL7/8sl5//XUtWbJEe/bsUVxcnG699VYVFBQ0SfEAAKDlsRiGYTRkA1FRUXrllVc0YcIEJSQkaPr06XryySclSXa7XbGxsXrppZf0yCOPuLW9/Px8RUREyGazNe6zXQxDKi9uvO0BANCS+QdLbjyHxV2efH/X+8FylZWV+n//7/+pqKhIqampysrKUm5uroYOHepcx2q1auDAgdqxY0ed4cNut8tut7sU3yTKi/XCW90V4nAoqtKhSIdDbSor//e/F38OMQw13scAAEAzNve0FBDilV17HD4OHjyo1NRUlZaWKjQ0VOvWrVO3bt20Y8cOSVJsbKzL+rGxsTpx4kSd21u4cKHmz5/vaRkes1fatTr88o/59TOMGoGk6udIR+XF/1Y6FOWoVGSlQ20clbI2qN0IAICrj8fh49prr9X+/ft14cIFrV27VuPGjVN6erpz+aWP0jUM47KP150zZ45mzJjhnM7Pz1diYqKnZV2Rwy9QU3s9ovN2my7YL+i8/YIu2G06bz+v83abSipKVGGx6Ec/P/3owXaD/ILUxhqhNtY2irRGqI01UpHWSLWxRijSGqko53SkIq0RiggIl59PvRucAABoHP7BXtu1x9+CAQEB6ty5sySpT58+2rNnjxYvXuwc55Gbm6v4+Hjn+nl5eTVaQ6qzWq2yWq2eluGxIP9gPXz9lDqXl1aU6oL9gi7YL+hc6TldKL2g8/bzF4NK6XmdL/3fn+3nncsqHBUqqShRSUWJThflulWHRRaFW8P/N6xEKjIw8uLPgZGKska5TLextlGbwDYK9Q+9bIADAKAlafA/wQ3DkN1uV3JysuLi4rRlyxZdf/31kqSysjKlp6frpZdeanChTS3QL1BxfnGKC4lza33DMFRUXnQxmFQLKc7wUm26ap18e74MGbLZbbLZbW7X5mfxU2Tg/7agBLZxhpKq6YstKxfnVU0H+gXW91QAANCkPAofc+fO1fDhw5WYmKiCggKtWrVK27dv18aNG2WxWDR9+nQtWLBAXbp0UZcuXbRgwQIFBwdrzJgxTVW/11gsFoUGhCo0IFSJcq+bqMJRofyy/P9rVSm9oHP2cy7T5+3nXUJLcUWxKowKnSk5ozMlZ9yuL8gvyCWsOFtUquZVCy1VwYbuIACAGTz6tvnhhx80duxY5eTkKCIiQr169dLGjRt16623SpJmz56tkpISPf744zp//rz69u2rzZs3Kyzs8gM9rxZ+Pn6KCoxSVGCU2++xV9p1ofTCZVtULg0z1buDcopy3N5XeEB4jVDiDC/VW1n+N7yE+YfRHQQA8FiD7/PR2JrsPh9XCcMwVFxRfPlxK9XGr5wvPS+b3SZDnv9v4GfxU4Q1wjWUVG9lqTZupWo6yC+oCY4aAOBtptznA82TxWJRiH+IQvxDlBjmXndQpaNS+WX5dXb9VA8vVWGmqLxIFUaFzpae1dnSs27XF+gb6BJKqreoRAVG1WhhibBGyN/Hv76nAwDQDBE+IF8fX2dXiiLce09ZZVmdXT9V4eXS6XJHuUorS5VblKtcN68OkqSwgLAa41aiAqPqHMcSFhAmHwvPTASA5orwgXoJ8A1QTHCMYoJj3Fq/qjvo0haVy41juWC/IEOGCsoKVFBWoJMFJ93al6/F92J30CVXANVoZakWXoL8ghi/AgAmIXzAFNW7g9qHtXfrPZWOShWUFTi7elzGsdTRPVRYXqhKo1LnSs/pXOk5yc0rmq2+VpfBtbWNV3HejyUwiu4gAGgAwgeaLV8f34uXAQdGuv2e8spy11BSFVQu7R6qFmbKHGWyV9o97w7yD6t1cG1d41joDgKAiwgfaFX8ff097g4qqSipOV7lkvBS1T1U9XIYDhWUF6igvECnCk65tS8fi4/rZcx13H+l+ny6gwC0RoQPXNUsFouC/YMV7B+sfwv9N7fe4zAcKigrqH28SrUrgqp3ERWUF8hhOOrVHVTbnWzrvJzZGil/X7qDADRvhA/AQz4WH0VYIxRhdfPSIF3sDrr02UCXvVKo9LyzO+iH4h/0Q/EPbu8r1D+0zjvZXjoIt421jcKt4XQHATAV4QMwgb+vv6KDoxUdHO3W+lXdQdWvALrcnW2rWlschkOF5YUqLC/Uvwr/5da+qrqDar0i6JL7rlTNpzsIQEMQPoBmqHp3UEJoglvvqeoOuuLlzFVBprbuIDcF+AS49UTm6qElwDegvqcDQCtD+ABaifp2B9nKbK7jVWq5Iqh6aLFX2lXmKFNecZ7yivPc3leIf0idLSq1DcINDwiXr49vfU4FgGaO8AFcxfx9/dUuqJ3aBbVz+z0lFSW1P9Sw2hVB1VtdbHabKo1KFZUXqai8SP9T+D9u7cfH4qOIgIi6n8h8ySDcNoFtFOwXTHcQ0AIQPgB4JMgvSEGhQR53B9V4wGEtT2Sumi4ou9gddN5+MeRkKcutffn7+Lv1RObq8+kOAsxH+ADQpKp3B3UI7+DWe8od5bLZbbU/4LCOBx+WVpaq3FGuvJI85ZW43x0U7Bdc551sa7tSiO4goOEIHwCaHX+f+nUH1dWSUn0cS/XWl0qjUsUVxSouLHa7O8giiyKsEVe8Mqh6aAnxD6E7CKiG8AGgVajqDooPjXdrfcMwVFBe4DJepbYrgqqHlvyyfBkynGNbsvOz3dqXn49fjWcFVQ8pNcaxBLaR1dfagLMBNG+EDwBXJYvFovCAcIUHhOua8Gvcek9Vd1BdLSm1PfSwpKJEFY4K/Vjyo34s+dHt+qq6gy77oMNqT2iOCIigOwgtBuEDANxU3+6gqvEr1W+/X9d9WC6UXlCFUVGv7qBwa3jtLSl1jGMJ9Q+lOwheQfgAgCYU5BekIL8gxYXEubV+9e6gK92Ovyq8VHUH2ew22ew2j7uD6rycuZbb8tMdhMZA+ACAZsSlO0judQdVOCoudgdd4Yqg6uGlvt1BQX5Bl72T7aXjWCKsEfLz4asGrvg/AgBaOD8fP7UNaqu2QW3dfk9pRWntzwqqaxxL6XlVGBUqqShRSUWJTheddntf4QHhzi6fOp/IXG1+mH8Y3UGtHOEDAK5CgX6BivOL86g7qLC8sNbb79cVWmx2myQpvyxf+WX5btfmZ/FzuSLo0jvZ1jaOJdAvsF7nAd5B+AAAXJHFYlFYQJjCAsKUqES33lPhqFB+WX6tLSnOgbbVxq+cLz2v4opiVRgVOlNyRmdKzrhdX5BfkPPJzFVXAF1uHEukNZLuIC/izAMAmoSfj5+iAqMUFRjl9nuquoOudEVQ9ZvIVTj+rzsopyjH7X2FBYTVeSfb2m7LT3dQ4yF8AACajfp0BxWVF9U5yLa28GKz22TIUEFZgQrKCnRCJ9zal5/FTxHWiCs+kbn6/CC/oIacjlaL8AEAaLEsFotCA0IVGhCqxDD3uoMqHZWyldncupy5an5Vd9DZ0rM6W3rW7foCfQPrbFGp7bb8EdYI+fv41/d0tBiEDwDAVcXXx9fj7iB7pf3/xqZUBZXLXM58zn5OFY4KlVaWKrcoV7lFuW7vKywgrM472dY2jiUsIEw+Fp/6nAqvIXwAAHAFVl+rYkNiFRsS69b6hmGouKL48lcEXfIsoUu7g04WnHRrX74W34vdQZdcEVSjlaVaeAnyC/Lq+BXCBwAAjcxisSjEP0Qh/iEedQfll+W73Fvl0tvxX3qb/qLyIlUalTpXek7nSs9JNvfqC/IL0o77dnjtih/CBwAAzYCvj6+z5UIR7r2nrLKs9pvF1XI5c1ULS7mjXH4+fl691JjwAQBACxXgG6CY4BjFBMe4tX5Vd1BBWUETV3Z5hA8AAK4S1buDvKllDY8FAAAtHuEDAACYivABAABMRfgAAACmInwAAABTET4AAICpCB8AAMBUhA8AAGAqwgcAADAV4QMAAJiK8AEAAExF+AAAAKYifAAAAFMRPgAAgKkIHwAAwFSEDwAAYCrCBwAAMBXhAwAAmIrwAQAATEX4AAAApiJ8AAAAUxE+AACAqQgfAADAVIQPAABgKo/Cx8KFC3XDDTcoLCxMMTExGjlypL799luXdcaPHy+LxeLy+vnPf96oRQMAgJbLo/CRnp6uyZMna+fOndqyZYsqKio0dOhQFRUVuax32223KScnx/nasGFDoxYNAABaLj9PVt64caPL9LJlyxQTE6PMzEwNGDDAOd9qtSouLq5xKgQAAK1Kg8Z82Gw2SVJUVJTL/O3btysmJkZdu3bVpEmTlJeX15DdAACAVsRiGIZRnzcahqE777xT58+f11dffeWcv3r1aoWGhqpDhw7KysrSvHnzVFFRoczMTFmt1hrbsdvtstvtzun8/HwlJibKZrMpPDy8PqUBAACT5efnKyIiwq3vb4+6XaqbMmWKvvnmG3399dcu80ePHu38uUePHurTp486dOigv/3tb7rrrrtqbGfhwoWaP39+fcsAAAAtTL26XaZOnapPPvlE27ZtU/v27S+7bnx8vDp06KDvvvuu1uVz5syRzWZzvk6dOlWfkgAAQAvhUcuHYRiaOnWq1q1bp+3btys5OfmK7zl79qxOnTql+Pj4WpdbrdZau2MAAEDr5FHLx+TJk/X+++9r5cqVCgsLU25urnJzc1VSUiJJKiws1MyZM/WPf/xD2dnZ2r59u0aMGKF27drpV7/6VZMcAAAAaFk8GnBqsVhqnb9s2TKNHz9eJSUlGjlypPbt26cLFy4oPj5egwcP1vPPP6/ExES39uHJgBUAANA8NNmA0yvllKCgIG3atMmTTQIAgKsMz3YBAACmInwAAABTET4AAICpCB8AAMBUhA8AAGAqwgcAADAV4QMAAJiK8AEAAExF+AAAAKYifAAAAFMRPgAAgKkIHwAAwFSEDwAAYCrCBwAAMBXhAwAAmIrwAQAATEX4AAAApiJ8AAAAUxE+AACAqQgfAADAVIQPAABgKsIHAAAwFeEDAACYivABAABMRfgAAACmInwAAABTET4AAICpCB8AAMBUhA8AAGAqwgcAADAV4QMAAJiK8AEAAExF+AAAAKYifAAAAFMRPgAAgKkIHwAAwFSEDwAAYCrCBwAAMBXhAwAAmIrwAQAATEX4AAAApiJ8AAAAUxE+AACAqQgfAADAVIQPAABgKsIHAAAwFeEDAACYivABAABMRfgAAACmInwAAABTET4AAICpCB8AAMBUhA8AAGAqwgcAADAV4QMAAJiK8AEAAExF+AAAAKbyKHwsXLhQN9xwg8LCwhQTE6ORI0fq22+/dVnHMAylpaUpISFBQUFBGjRokA4dOtSoRQMAgJbLo/CRnp6uyZMna+fOndqyZYsqKio0dOhQFRUVOdd5+eWX9frrr2vJkiXas2eP4uLidOutt6qgoKDRiwcAAC2PxTAMo75v/vHHHxUTE6P09HQNGDBAhmEoISFB06dP15NPPilJstvtio2N1UsvvaRHHnnkitvMz89XRESEbDabwsPD61saAAAwkSff334N2ZHNZpMkRUVFSZKysrKUm5uroUOHOtexWq0aOHCgduzYUWv4sNvtstvtLsUDQENUVlaqvLzc22UArY6/v798fX0bvJ16hw/DMDRjxgz1799fPXr0kCTl5uZKkmJjY13WjY2N1YkTJ2rdzsKFCzV//vz6lgEAToZhKDc3VxcuXPB2KUCrFRkZqbi4OFkslnpvo97hY8qUKfrmm2/09ddf11h2aUGGYdRZ5Jw5czRjxgzndH5+vhITE+tbFoCrWFXwiImJUXBwcIP+OAJwZRiGiouLlZeXJ0mKj4+v97bqFT6mTp2qTz75RF9++aXat2/vnB8XFyfp4h+A6kXl5eXVaA2pYrVaZbVa61MGADhVVlY6g0fbtm29XQ7QKgUFBUm6+L0eExNT7y4Yj652MQxDU6ZM0UcffaQvvvhCycnJLsuTk5MVFxenLVu2OOeVlZUpPT1d/fr1q1eBAOCOqjEewcHBXq4EaN2qfscaMq7Ko5aPyZMna+XKlfr4448VFhbmHOMRERGhoKAgWSwWTZ8+XQsWLFCXLl3UpUsXLViwQMHBwRozZky9iwQAd9HVAjStxvgd8yh8LF26VJI0aNAgl/nLli3T+PHjJUmzZ89WSUmJHn/8cZ0/f159+/bV5s2bFRYW1uBiAQBAy+dxt0ttr6rgIV1MRGlpacrJyVFpaanS09OdV8MAAJq38ePHa+TIkQ3axvbt22WxWJxXHS1fvlyRkZENrg2tB892AYBWaNCgQZo+fbq3y5AkjR49WkePHnVOp6Wl6brrrmvUfSxfvlwWi0W33Xaby/wLFy7IYrFo+/btznUu96ptvfj4eN1zzz3Kyspq1JqvZoQPAECTCgoKUkxMTJPvx8/PT59//rm2bdtW6/LRo0crJyfH+UpNTdWkSZNc5lVdHBEeHq6cnBydPn1aK1eu1P79+/Xv//7vqqysbPLjuBoQPgC0SoZhqLiswisvT59aMWjQIE2dOlXTp09XmzZtFBsbq7fffltFRUV66KGHFBYWpk6dOumzzz5zvufw4cO6/fbbFRoaqtjYWI0dO1ZnzpyRdLHrJD09XYsXL3b+6z07O1uVlZWaOHGikpOTFRQUpGuvvVaLFy+utab58+crJiZG4eHheuSRR1RWVuZcZrfb9Zvf/EYxMTEKDAxU//79tWfPnjqPr3q3y/LlyzV//nwdOHDAWdvy5cslXbxr9sMPP+zc780336wDBw64fR5DQkL00EMP6be//W2ty4OCghQXF+d8BQQEKDg4uMY86eIQgri4OMXHx2vw4MF69tln9c9//lPHjh3T+fPndf/99ys6OlpBQUHq0qWLli1b5nadaODt1QGguSopr1S3ZzZ5Zd+Hnxum4ADP/ryuWLFCs2fP1u7du7V69Wo99thjWr9+vX71q19p7ty5+t3vfqexY8fq5MmTstlsGjhwoCZNmqTXX39dJSUlevLJJ3XPPffoiy++0OLFi3X06FH16NFDzz33nCQpOjpaDodD7du315o1a9SuXTvt2LFDDz/8sLNbocrnn3+uwMBAbdu2TdnZ2XrooYfUrl07vfjii5IuXliwdu1arVixQh06dNDLL7+sYcOG6dixY87HbdRl9OjR+uc//6mNGzdq69atki5eMWkYhu644w5FRUVpw4YNioiI0FtvvaUhQ4bo6NGjV9xulbS0NHXu3Fl/+ctf9Otf/9qjz+Byqu5vUV5ernnz5unw4cP67LPP1K5dOx07dkwlJSWNtq+rAeEDAJqB3r176+mnn5Z08c7PixYtUrt27TRp0iRJ0jPPPKOlS5fqm2++0YYNG5SSkqIFCxY43//ee+8pMTFRR48eVdeuXV3+VV/F19fX5XEWycnJ2rFjh9asWeMSPgICAvTee+8pODhY3bt313PPPadZs2bp+eefV0lJiZYuXarly5dr+PDhkqQ//elP2rJli959913NmjXrsscZFBSk0NBQ+fn5udT2xRdf6ODBg8rLy3PeePLVV1/V+vXr9Ze//EUPP/ywW+cxISFB06ZN01NPPdXggbNV/vWvf+mVV15R+/bt1bVrV508eVLXX3+9+vTpI0lKSkpqlP1cTQgfAFqlIH9fHX5umNf27alevXo5f/b19VXbtm3Vs2dP57yqu0Tn5eUpMzNT27ZtU2hoaI3tHD9+XF27dq1zP2+++abeeecdnThxQiUlJSorK6sx+LN3794uN2tLTU1V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S+nSL0XDMGrM84TD4VB8fLy2b99eY5m7l+n6+Pioc+fOtc6/tCvs0ifkOhwOzZ8/X3fddVeN9wcGBrq1/0u1a9dO7dq1U9euXfXTn/5UiYmJ2rlzp1JTU53rrF69Wt26dVNkZKRL8OrcubMsFov++7//22WbHTt2lHSxBam69957T4cOHZKf3/99rTscDr377ruEDwAwi8Vi8bjro6VISUnR2rVrlZSU5PJlU11AQIAqKytd5n311Vfq16+fHn/8cee82loVDhw4oJKSEucX3M6dOxUaGqr27durbdu2CggI0Ndff60xY8ZIuvhFnpGR4falvbXVlpKSotzcXPn5+SkpKcmt7bgrOjpaBQUFKioqco6f2L9/f439f/vtt7WGl8ZQFX6qt1ZIUmJiojp16lRj/bZt2+rWW2/VkiVLNHXq1DrHfUjSwYMHlZGRoe3btysqKso5/8KFCxowYID++c9/qkePHo10JI2DAacA0MJMnjxZ586d03333afdu3fr+++/1+bNmzVhwgTnl3pSUpJ27dql7OxsnTlzRg6HQ507d1ZGRoY2bdqko0ePat68edqzZ0+N7ZeVlWnixIk6fPiwPvvsMz377LOaMmWKfHx8FBISoscee0yzZs3Sxo0bdfjwYU2aNEnFxcWaOHGiW/UnJSUpKytL+/fv15kzZ2S323XLLbcoNTVVI0eO1KZNm5Sdna0dO3bo6aefVkZGRoPOV9++fRUcHKy5c+fq2LFjWrlypZYvX+6yzjPPPKM///nPSktL06FDh3TkyBGtXr3aOQ7HE7t379aSJUu0f/9+nThxQtu2bdOYMWPUqVMnl1aPK/njH/+oiooK9enTR6tXr9aRI0f07bff6v3339d///d/y9fXV9LFgaY33nijBgwYoB49ejhf/fv3V2pqarMceEr4AIAWJiEhQX//+99VWVmpYcOGqUePHpo2bZoiIiKc4xxmzpwpX19fdevWTdHR0Tp58qQeffRR3XXXXRo9erT69u2rs2fPurSCVBkyZIi6dOmiAQMG6J577tGIESOUlpbmXL5o0SKNGjVKY8eOVUpKio4dO6ZNmzapTZs2btU/atQo3XbbbRo8eLCio6P14YcfymKxaMOGDRowYIAmTJigrl276t5771V2drZzvEt9RUVF6f3339eGDRvUs2dPffjhhy7HI0nDhg3Tp59+qi1b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VAsXLpTFYtH06dO9XUqDpaWlyWKxuLzi4uK8XVaj+J//+R898MADatu2rYKDg3XdddcpMzPT22U1WFJSUo3PzGKxaPLkyd4urUEqKir09NNPKzk5WUFBQerYsaOee+45ORwOb5dWL1dF+Fi9erWmT5+up556Svv27dMvfvELDR8+XCdPnvR2aQ1SVFSk3r17a8mSJd4upVGlp6dr8uTJ2rlzp7Zs2aKKigoNHTpURUVF3i6twdq3b69FixYpIyNDGRkZuvnmm3XnnXfq0KFD3i6tUezZs0dvv/22evXq5e1SGk337t2Vk5PjfB08eNDbJTXY+fPnddNNN8nf31+fffaZDh8+rNdee02RkZHeLq3B9uzZ4/J5bdmyRZJ09913e7myhnnppZf05ptvasmSJTpy5IhefvllvfLKK3rjjTe8XVr9GFeBG2+80Xj00Udd5v3kJz8xfvvb33qposYnyVi3bp23y2gSeXl5hiQjPT3d26U0iTZt2hjvvPOOt8tosIKCAqNLly7Gli1bjIEDBxrTpk3zdkkN9uyzzxq9e/f2dhmN7sknnzT69+/v7TJMMW3aNKNTp06Gw+HwdikNcscddxgTJkxwmXfXXXcZDzzwgJcqaphW3/JRVlamzMxMDR061GX+0KFDtWPHDi9VBU/YbDZJUlRUlJcraVyVlZVatWqVioqKlJqa6u1yGmzy5Mm64447dMstt3i7lEb13XffKSEhQcnJybr33nv1/fffe7ukBvvkk0/Up08f3X333YqJidH111+vP/3pT94uq9GVlZXp/fff14QJExr9QaVm69+/vz7//HMdPXpUknTgwAF9/fXXuv32271cWf00uwfLNbYzZ86osrJSsbGxLvNjY2OVm5vrpargLsMwNGPGDPXv3189evTwdjmN4uDBg0pNTVVpaalCQ0O1bt06devWzdtlNciqVau0d+9e7dmzx9ulNKq+ffvqz3/+s7p27aoffvhBL7zwgvr166dDhw6pbdu23i6v3r7//nstXbpUM2bM0Ny5c7V792795je/kdVq1YMPPujt8hrN+vXrdeHCBY0fP97bpTTYk08+KZvNpp/85Cfy9fVVZWWlXnzxRd13333eLq1eWn34qHJp6jUMo8Un4avBlClT9M033+jrr7/2dimN5tprr9X+/ft14cIFrV27VuPGjVN6enqLDSCnTp3StGnTtHnzZgUGBnq7nEY1fPhw5889e/ZUamqqOnXqpBUrVmjGjBlerKxhHA6H+vTpowULFkiSrr/+eh06dEhLly5tVeHj3Xff1fDhw5WQkODtUhps9erVev/997Vy5Up1795d+/fv1/Tp05WQkKBx48Z5uzyPtfrw0a5dO/n6+tZo5cjLy6vRGoLmZerUqfrkk0/05Zdfqn379t4up9EEBASoc+fOkqQ+ffpoz549Wrx4sd566y0vV1Y/mZmZysvL089+9jPnvMrKSn355ZdasmSJ7Ha7fH19vVhh4wkJCVHPnj313XffebuUBomPj68Rdn/6059q7dq1Xqqo8Z04cUJbt27VRx995O1SGsWsWbP029/+Vvfee6+ki2H4xIkTWrhwYYsMH61+zEdAQIB+9rOfOUc8V9myZYv69evnpapwOYZhaMqUKfroo4/0xRdfKDk52dslNSnDMGS3271dRr0NGTJEBw8e1P79+52vPn366P7779f+/ftbTfCQJLvdriNHjig+Pt7bpTTITTfdVOPy9aNHj6pDhw5eqqjxLVu2TDExMbrjjju8XUqjKC4ulo+P61e2r69vi73UttW3fEjSjBkzNHbsWPXp00epqal6++23dfLkST366KPeLq1BCgsLdezYMed0VlaW9u/fr6ioKF1zzTVerKxhJk+erJUrV+rjjz9WWFiYs9UqIiJCQUFBXq6uYebOnavhw4crMTFRBQUFWrVqlbZv366NGzd6u7R6CwsLqzEeJyQkRG3btm3x43RmzpypESNG6JprrlFeXp5eeOEF5efnt8h/aVb3xBNPqF+/flqwYIHuuece7d69W2+//bbefvttb5fWKBwOh5YtW6Zx48bJz691fM2NGDFCL774oq655hp1795d+/bt0+uvv64JEyZ4u7T68e7FNub5z//8T6NDhw5GQECAkZKS0iou29y2bZshqcZr3Lhx3i6tQWo7JknGsmXLvF1ag02YMMH5/2F0dLQxZMgQY/Pmzd4uq9G1lkttR48ebcTHxxv+/v5GQkKCcddddxmHDh3ydlmN4q9//avRo0cPw2q1Gj/5yU+Mt99+29slNZpNmzYZkoxvv/3W26U0mvz8fGPatGnGNddcYwQGBhodO3Y0nnrqKcNut3u7tHqxGIZheCf2AACAq1GrH/MBAACaF8IHAAAwFeEDAACYivABAABMRfgAAACmInwAAABTET4AAICpCB8AAMBUhA8AAGAqwgcAADAV4QMAAJiK8AEAAEz1/wF+qykphk5V9wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from biocrnpyler.mixtures import EnergyTxTlExtract\n", "#A = DNAassembly(\"A\", promoter = \"P\", rbs = \"rbs\")\n", "E = EnergyTxTlExtract(parameter_file = \"txtl_toolbox_parameters.txt\")\n", "CRN = E.compile_crn()\n", "print(CRN.pretty_print())\n", "try:\n", " import numpy as np\n", " maxtime = 30000\n", " timepoints = np.arange(0, maxtime, 100)\n", " R = CRN.simulate_with_bioscrape_via_sbml(timepoints)\n", " if R is not None:\n", " import pylab as plt\n", " plt.plot(timepoints, R[str(E.ntps.get_species())], label = E.ntps.get_species())\n", " plt.plot(timepoints, R[str(E.amino_acids.get_species())], label = E.amino_acids.get_species())\n", " plt.plot(timepoints, R[str(E.fuel.get_species())], label = E.fuel.get_species())\n", " plt.xticks(np.arange(0, maxtime, 3600), [str(i) for i in range(0, int(np.ceil(maxtime/3600)))])\n", " plt.legend()\n", "except ModuleNotFoundError:\n", " print('please install the plotting libraries: pip install biocrnpyler[all]')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Adding a DNA assembly \n", "This will produce protein expression, but for a limited time. The" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Species(N = 14) = {\n", " metabolite[amino_acids] (@ 30.0), \n", " found_key=(mech=initial concentration, partid=None, name=amino_acids).\n", " search_key=(mech=initial concentration, partid=, name=amino_acids).\n", "\n", " metabolite[Fuel_3PGA] (@ 30.0), \n", " found_key=(mech=initial concentration, partid=None, name=Fuel_3PGA).\n", " search_key=(mech=initial concentration, partid=, name=Fuel_3PGA).\n", "\n", " protein[RNAase] (@ 20.2), \n", " found_key=(mech=initial concentration, partid=None, name=RNAase).\n", " search_key=(mech=initial concentration, partid=, name=RNAase).\n", "\n", " metabolite[NTPs] (@ 5.0), \n", " found_key=(mech=initial concentration, partid=None, name=NTPs).\n", " search_key=(mech=initial concentration, partid=, name=NTPs).\n", "\n", " protein[Ribo] (@ 0.0273), \n", " found_key=(mech=initial concentration, partid=None, name=protein_Ribo).\n", " search_key=(mech=initial concentration, partid=, name=protein_Ribo).\n", "\n", " protein[RNAP] (@ 0.00933), \n", " found_key=(mech=initial concentration, partid=None, name=RNAP).\n", " search_key=(mech=initial concentration, partid=, name=RNAP).\n", "\n", " complex[protein[Ribo]:rna[A]] (@ 0), \n", " complex[protein[RNAase]:rna[A]] (@ 0), \n", " complex[dna[A]:protein[RNAP]] (@ 0), \n", " complex[complex[protein[Ribo]:rna[A]]:protein[RNAase]] (@ 0), \n", " metabolite[NDPs] (@ 0), \n", " protein[A] (@ 0), \n", " rna[A] (@ 0), \n", " dna[A] (@ 0), \n", "}\n", "\n", "Reactions (12) = [\n", "0. dna[A]+protein[RNAP] <--> complex[dna[A]:protein[RNAP]]\n", " Kf=k_forward * dna_A * protein_RNAP\n", " Kr=k_reverse * complex_dna_A_protein_RNAP_\n", " k_forward=4.48\n", " found_key=(mech=energy_transcription_mm, partid=None, name=kb).\n", " search_key=(mech=energy_transcription_mm, partid=P, name=kb).\n", " k_reverse=2.48889e-06\n", " found_key=(mech=energy_transcription_mm, partid=None, name=ku).\n", " search_key=(mech=energy_transcription_mm, partid=P, name=ku).\n", "\n", "1. metabolite[NTPs]+complex[dna[A]:protein[RNAP]] --> metabolite[NTPs]+dna[A]+protein[RNAP]+rna[A]\n", " Kf=k_forward * metabolite_NTPs * complex_dna_A_protein_RNAP_\n", " k_forward=0.010833333333333334\n", "\n", "2. metabolite[NTPs]+complex[dna[A]:protein[RNAP]] --> complex[dna[A]:protein[RNAP]]\n", " Kf=k_forward * metabolite_NTPs * complex_dna_A_protein_RNAP_\n", " k_forward=3.25\n", " found_key=(mech=energy_transcription_mm, partid=None, name=ktx).\n", " search_key=(mech=energy_transcription_mm, partid=P, name=ktx).\n", "\n", "3. rna[A]+protein[Ribo] <--> complex[protein[Ribo]:rna[A]]\n", " Kf=k_forward * rna_A * protein_Ribo\n", " Kr=k_reverse * complex_protein_Ribo_rna_A_\n", " k_forward=0.819\n", " found_key=(mech=energy_translation_mm, partid=None, name=kb).\n", " search_key=(mech=energy_translation_mm, partid=rbs, name=kb).\n", " k_reverse=0.002853659\n", " found_key=(mech=energy_translation_mm, partid=None, name=ku).\n", " search_key=(mech=energy_translation_mm, partid=rbs, name=ku).\n", "\n", "4. 4metabolite[NTPs]+metabolite[amino_acids]+complex[protein[Ribo]:rna[A]] --> 4metabolite[NTPs]+metabolite[amino_acids]+rna[A]+protein[Ribo]+protein[A]\n", " Kf=k_forward * metabolite_NTPs^4 * metabolite_amino_acids * complex_protein_Ribo_rna_A_\n", " k_forward=0.192\n", "\n", "5. 4metabolite[NTPs]+metabolite[amino_acids]+complex[protein[Ribo]:rna[A]] --> complex[protein[Ribo]:rna[A]]+4metabolite[NDPs]\n", " Kf=k_forward * metabolite_NTPs^4 * metabolite_amino_acids * complex_protein_Ribo_rna_A_\n", " k_forward=19.2\n", " found_key=(mech=energy_translation_mm, partid=None, name=ktl).\n", " search_key=(mech=energy_translation_mm, partid=rbs, name=ktl).\n", "\n", "6. metabolite[Fuel_3PGA]+metabolite[NDPs] --> metabolite[NTPs]\n", " Kf=k_forward * metabolite_Fuel_3PGA * metabolite_NDPs\n", " k_forward=0.02\n", " found_key=(mech=one_step_pathway, partid=NTPs_production, name=k).\n", " search_key=(mech=one_step_pathway, partid=NTPs_production, name=k).\n", "\n", "7. metabolite[NTPs] --> metabolite[NDPs]\n", " Kf=k_forward * metabolite_NTPs\n", " k_forward=1.77e-05\n", " found_key=(mech=one_step_pathway, partid=NTPs_degradation, name=k).\n", " search_key=(mech=one_step_pathway, partid=NTPs_degradation, name=k).\n", "\n", "8. rna[A]+protein[RNAase] <--> complex[protein[RNAase]:rna[A]]\n", " Kf=k_forward * rna_A * protein_RNAase\n", " Kr=k_reverse * complex_protein_RNAase_rna_A_\n", " k_forward=1.0\n", " found_key=(mech=rna_degradation_mm, partid=None, name=kb).\n", " search_key=(mech=rna_degradation_mm, partid=rna_A, name=kb).\n", " k_reverse=1.26582e-06\n", " found_key=(mech=rna_degradation_mm, partid=None, name=ku).\n", " search_key=(mech=rna_degradation_mm, partid=rna_A, name=ku).\n", "\n", "9. complex[protein[RNAase]:rna[A]] --> protein[RNAase]\n", " Kf=k_forward * complex_protein_RNAase_rna_A_\n", " k_forward=1.01\n", " found_key=(mech=rna_degradation_mm, partid=None, name=kdeg).\n", " search_key=(mech=rna_degradation_mm, partid=rna_A, name=kdeg).\n", "\n", "10. complex[protein[Ribo]:rna[A]]+protein[RNAase] <--> complex[complex[protein[Ribo]:rna[A]]:protein[RNAase]]\n", " Kf=k_forward * complex_protein_Ribo_rna_A_ * protein_RNAase\n", " Kr=k_reverse * complex_complex_protein_Ribo_rna_A__protein_RNAase_\n", " k_forward=1.0\n", " found_key=(mech=rna_degradation_mm, partid=None, name=kb).\n", " search_key=(mech=rna_degradation_mm, partid=complex_protein_Ribo_rna_A_, name=kb).\n", " k_reverse=1.26582e-06\n", " found_key=(mech=rna_degradation_mm, partid=None, name=ku).\n", " search_key=(mech=rna_degradation_mm, partid=complex_protein_Ribo_rna_A_, name=ku).\n", "\n", "11. complex[complex[protein[Ribo]:rna[A]]:protein[RNAase]] --> protein[Ribo]+protein[RNAase]\n", " Kf=k_forward * complex_complex_protein_Ribo_rna_A__protein_RNAase_\n", " k_forward=1.01\n", " found_key=(mech=rna_degradation_mm, partid=None, name=kdeg).\n", " search_key=(mech=rna_degradation_mm, partid=complex_protein_Ribo_rna_A_, name=kdeg).\n", "\n", "]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/murray/Library/CloudStorage/Dropbox/macosx/src/biocrnpyler/biocrnpyler/core/parameter.py:678: UserWarning: parameter file contains no unit column! Please add a column named ['unit', 'units'].\n", " warn(\n" ] }, { "data": { "image/png": "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mF9//ZW6deua/ThCVFinZTI5UThJPlQUFBTE33//jV6vp1OnTkRERDBy5Eg8PT3R3hiCeOzYseh0OurVq4evry9nzpxh8ODB9OjRg169etG8eXMuX76crxYkT4cOHahVqxbPdn2W115+jYcefYipU6eann/33Xfp2bMnffr0oUmTJpw4cYL169dTuXLlYsXfs2dPHn30Udq3b4+vry9Lly5Fo9EQFRVFmzZt6N+/P+Hh4Tz77LPExcWZ2ruUVN++falRo0apXnsnDg4OTJo0iYYNG9KmTRt0Oh3Lli0z+3GEqJCuX4QrpwANBDdXOxpRxmiUkgxkYQVJSUns2bOH1q1b57s/L0ovPSed2ORYdBodtb1qy4RiAoDMzExiY2MJDQ3Fyckp33MpKSl4enqSnJyMh4eHShGWjC3GXK79twp+fAn8G8CQv9SORlhBST6DUvNRATjZOaHVaNErejL1mWqHI4SoCOK2GR9DWqkbhyiTJPmoALQaLS72LoD55nkprfr16+Pm5lbosmTJElVjE0KYUeyN5CO0tbpxiDJJertUEK72rqRmp5KWk4aPs49qcURFRZGTk1Poc6VtEyKEKGOuJ8Dl44BGGpuKQknyUUG42hvbz6TnpN/zWB73onr16qocVwhhRXE32ngENADn4jVgFxWL3HapIJx0xnYfBsVARq7MXyKEsKDYP42PoW3UjUOUWZJ8VBAajcZU+6F2uw8hRDknjU3FXUjyUYFI8iGEsLjk88bxPTRaae8hiiTJRwViaveRm45BMagcjRCiXMpr7xHYCJw81Y1FlFmSfFQgjjpHdFodiqJIuw8hhGXE3WjvESJdbEXRJPkop/r160f37t3zbbu13Ud6Tvpd97FlyxY0Gg3Xrl0DYNGiRSWembassMXYNRoNP/30U5HPx8XFodFoOHDggNViEuKu8sb3kORD3IEkH2Vcu3btij3LbHG42BkHG0vPvXvycbtevXpx7Ngx089Tp06lcePG5grNom6P3RbEx8fTuXNntcMQoviunYFrp0Gjg+oyk60oWomTjz///JNu3boRFBRU6Dezfv36odFo8i0PPvigueIV9+j28T5KwtnZGT8/P0uEZXG2GHtAQACOjo5qhyFE8eW19wi6Dxzd1Y1FlGklTj7S0tJo1KgRX3zxRZFlHn30UeLj401LVFTUPQVpK9q1a8eIESMYNWoUlStXxt/fn6+//pq0tDReeukl3N3dqVmzJmvXrjW9Jjo6mi5duuDm5oa/vz99+vQhKSkJMCZyW7du5dNPPzUlcnFxcej1egYMGEBoaCjOzs7Url2bTz/9tNCYpk2bhp+fHx4eHrzyyito9BrTeB/Jacm8+uqr+Pn54eTkRKtWrdi9e3eR53frrYtFixYxbdo0Dh48aIpt0aJFACQnJzNo0CDTcR966CEOHjxYrPfw5MmTPPHEE/j7++Pm5sb999/Ppk2b8pUJCQnh7bff5sUXX8TNzY3q1avz888/c+nSJZ544gnc3Nxo0KABe/bsKTR2uFlr87///Y+QkBA8PT159tlnuX79uqlMVlZWid6fWxX3d7RgwQLq16+Po6MjgYGBDB8+3PTc7cn9rl27uO+++3BycqJZs2bs378/376uXr3K888/j6+vL87OztSqVYuFCxcWK14hzCJWutiK4ilx8tG5c2fefvttevToUWQZR0dHAgICTIuXl9c9BYmiQHaaOksJawcWL16Mj48Pu3btYsSIEQwZMoSnn36aFi1asG/fPjp16kSfPn1IT08nPj6etm3b0rhxY/bs2cO6deu4ePEizzzzDACffvopkZGRDBw40JTIBQcHYzAYqFq1KitWrCA6Opo333yT119/nRUrVuSL5ffffycmJobNmzezdOlSVq9ezfTp0021H+MnjGflypUsXryYffv2ERYWRqdOnbhy5cpdz7NXr1689tpr1K9f3xRbr169UBSFrl27kpCQQFRUFHv37qVJkyZ06NChWPtNTU2lS5cubNq0if3799OpUye6devGmTNn8pX75JNPaNmyJfv376dr16706dOHF198kRdeeMF0Li+++OIda3dOnjzJTz/9xK+//sqvv/7K1q1beffdd03Pjx9f+venOL+juXPnMmzYMAYNGsShQ4dYs2YNYWFhhe4vLS2Nxx57jNq1a7N3716mTp3K2LFj85WZMmUK0dHRrF27lpiYGObOnYuPj3pD6YsKKK/mQ+ZzEXej3ANAWb16db5tffv2VTw9PRVfX1+lVq1ayssvv6xcvHixyH1kZmYqycnJpiU2NlZZu3atkpqaerNQVqqivOWhzpKVWmTst2vbtq3SqlUr08+5ubmKq6ur0qdPH9O2+Ph4BVB27NihTJkyRenYsWO+fZw9e1YBlKNHj5r2OXLk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2cO6deu4ePEizzzzDACffvopkZGRDBw40FQDEBwcjMFgoGrVqqxYsYLo6GjefPNNXn/9dVasWJEvlt9//52YmBg2b97M0qVLWb16NdOmTTM9P378eFauXMnixYv57c/fqBZajce7Ps6VK1fuep69evXitddeo379+qbYevXqhaIodO3alYSEBKKioti7dy9NmjShQ4cOxdrvvVq/fj0vvPACr776KtHR0Xz11VcsWrSId9555573feXKFZYsWUKLFi1Mk6EVxsXFWJOUk5PD5cuX2bBhA8OGDcPV1bXQ8rcPPT5//nyee+457O3tee6555g/f/49xy6EWZ343fgY/AA4uqkbi7BJNtGvMiM3g+Y/NFfl2P/0/sfUJqI4GjVqxOTJkwHjYEvvvvsuPj4+DBw4EIA333yTuXPn8u+//xIVFUWTJk2YOXOm6fULFiwgODiYY8eOER4ejoODAy4uLgQEBJjK6HS6fElEaGgo27dvZ8WKFabEBYyjUS5YsAAXFxfq16/P9OnTGTduHDNmzCAjI4O5c+eyaNEiOnfuTFJGElM/mcqjTR9l/vz5jBs37o7n6ezsjJubG3Z2dvli++OPPzh06BCJiYmmoa8//PBDfvrpJ3788UcGDRp01/cwOTkZN7ebFzQ3N7ciJy273TvvvMPEiRPp27cvADVq1GDGjBmMHz+et956q1j7uN2ECRP44osvSE9P58EHH+TXX38tsmxaWhqTJk1Cp9PRtm1bTpw4gaIo1K5dO185Hx8fMjMzARg2bBjvvfceYJyfZOXKlaYZYl944QVatmzJ559/XiHmjBE2Ii/5COugbhzCZtlE8mFLGjZsaFrX6XR4e3vToEED07a8+S8SExPZu3cvmzdvzvePNs/JkycJDw8v8jjz5s3j22+/5fTp02RkZJCdnV2g8WejRo1M38LBOMx1amoqZ8+eJTk5mZycHFq2bAkY233Y29sTcV8E0dHRpTp3gL1795Kamoq3t3e+7RkZGZw8ebJY+3B3d883JoRWW/wKur1797J79+58NR16vZ7MzEzS09PzvR/FNW7cOAYMGMDp06eZNm0aL774Ir/++mu+GosWLVqg1WpJT08nMDCQRYsW0aBBA/75xzj09O21G7t27cJgMPD888/nmxb+hx9+oEaNGjRq1AiAxo0bU6NGDZYtW1asxE0Ii8vNhtg/jeth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bTPr/v/880+6detGUFAQGo2Gn376yaz7nzVrFvfffz/u7u74+fnRvXt3jh49arb9z507l4YNG5oGjImMjGTt2rVm239hZs2ahUajYdSoUWbb59SpU9FoNPmWgIAAs+0f4Pz587zwwgt4e3vj4uJC48aN2bt3r9n2HxISUuAcNBoNw4YNM9sxcnNzmTx5MqGhoTg7O1OjRg2mT5+OwWAw2zHKC0teO2z9ugHWv3bY6nUDbP/aoeZ1wyaTj+XLlzNq1CjeeOMN9u/fT+vWrencuTNnzpwx2zHS0tJo1KgRX3zxhdn2eautW7cybNgwdu7cycaNG8nNzaVjx46kpaWZZf9Vq1bl3XffZc+ePezZs4eHHnqIJ554gsOHD5tl/7fbvXs3X3/9NQ0bNjT7vuvXr098fLxpOXTokNn2ffXqVVq2bIm9vT1r164lOjqajz76iEqVKpntGLt3784X/8aNGwF4+umnzXaM9957j3nz5vHFF18QExPD+++/zwcffMDnn39utmOUB5a+dtj6dQOse+2w1esGlI9rh6rXDcUGPfDAA8rgwYPzbatTp44yceJEixwPUFavXm2RfedJTExUAGXr1q0WO0blypWVb7/91uz7vX79ulKrVi1l48aNStu2bZWRI0eabd9vvfWW0qhRI7Pt73YTJkxQWrVqZbH9F2bkyJFKzZo1FYPBYLZ9du3aVenfv3++bT169FBeeOEFsx2jPLDmtaO8XDcUxTLXDlu+bihK+bh2qHndsLmaj+zsbPbu3UvHjh3zbe/YsSPbt29XKap7l5ycDICXl5fZ963X61m2bBlpaWlERkaaff/Dhg2ja9euPPzww2bfN8Dx48cJCgoiNDSUZ599llOnTplt32vWrKFZs2Y8/fTT+Pn5cd999/HNN9+Ybf+3y87O5vvvv6d///53nTixJFq1asXvv//OsWPHADh48CB//fUXXbp0MdsxbF15vHZY8roBlr122PJ1A8rHtUPV64bF0xszO3/+vAIof//9d77t77zzjhIeHm6RY2LhbzAGg0Hp1q2b2bPof//9V3F1dVV0Op3i6emp/Pbbb2bdv6IoytKlS5WIiAglIyNDURTF7N9goqKilB9//FH5999/Td+Q/P39laSkJLPs39HRUXF0dFQmTZqk7Nu3T5k3b57i5OSkLF682Cz7v93y5csVnU6nnD9/3qz7NRgMysSJExWNRqPY2dkpGo1GmTlzplmPYeusfe2w1euGolj+2mHr1w1FKR/XDjWvGzabfGzfvj3f9rffflupXbu2RY5p6YvI0KFDlerVqytnz541636zsrKU48ePK7t371YmTpyo+Pj4KIcPHzbb/s+cOaP4+fkpBw4cMG0z90XkdqmpqYq/v7/y0UcfmWV/9vb2SmRkZL5tI0aMUB588EGz7P92HTt2VB577DGz73fp0qVK1apVlaVLlyr//vuv8t133yleXl7KokWLzH4sW2Xta4etXjcUxbLXjvJw3VCU8nHtUPO6YXPJR1ZWlqLT6ZRVq1bl2/7qq68qbdq0scgxLXkRGT58uFK1alXl1KlTFtn/rTp06KAMGjTIbPtbvXq1Aig6nc60AIpGo1F0Op2Sm5trtmPd6uGHHy5w3760qlWrpgwYMCDftjlz5ihBQUFm2f+t4uLiFK1Wq/z0009m33fVqlWVL774It+2GTNmWCwht0XWvnaUl+uGopj32lEerhuKUj6uHWpeN2yuzYeDgwNNmzY1tfrNs3HjRlq0aKFSVCWnKArDhw9n1apV/PHHH4SGhlrlmFlZWWbbX4cOHTh06BAHDhwwLc2aNeP555/nwIED6HQ6sx0rT1ZWFjExMQQGBpplfy1btizQVfHYsWNUr17dLPu/1cKFC/Hz86Nr165m33d6ejpabf6Ps06nk662tygP1w41rht5xzXXtaM8XDegfFw7VL1uWDy9sYBly5Yp9vb2yvz585Xo6Ghl1KhRiqurqxIXF2e2Y1y/fl3Zv3+/sn//fgVQPv74Y2X//v3K6dOnzbL/IUOGKJ6ensqWLVuU+Ph405Kenm6W/U+aNEn5888/ldjYWOXff/9VXn/9dUWr1SobNmwwy/6LYu7q09dee03ZsmWLcurUKWXnzp3KY489pri7u5vtd71r1y7Fzs5Oeeedd5Tjx48rS5YsUVxcXJTvv//eLPvPo9frlWrVqikTJkww637z9O3bV6lSpYry66+/KrGxscqqVasUHx8fZfz48RY5nq2y9LXD1q8biqLOtcPWrhuKUj6uHWpeN2wy+VAURfnyyy+V6tWrKw4ODkqTJk3M3tVs8+bNClBg6du3r1n2X9i+AWXhwoVm2X///v1N74+vr6/SoUMHiyceimL+i0ivXr2UwMBAxd7eXgkKClJ69Ohh1nYriqIov/zyixIREaE4OjoqderUUb7++muz7l9RFGX9+vUKoBw9etTs+1YURUlJSVFGjhypVKtWTXFyclJq1KihvPHGG0pWVpZFjmfLLHntsPXrhqKoc+2wxeuGotj+tUPN64ZGURTF8vUrQgghhBBGNtfmQwghhBC2TZIPIYQQQliVJB9CCCGEsCpJPoQQQghhVZJ8CCGEEMKqJPkQQgghhFVJ8iGEEEIIq5LkQwghhBBWJcmHEEIIIaxKkg8hhBBCWJUkH0IIIYSwKkk+hBBCCGFV/w8NMpnH/kNuNQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from biocrnpyler.components import DNAassembly\n", "from biocrnpyler.mixtures import EnergyTxTlExtract\n", "import numpy as np\n", "import pylab as plt\n", "\n", "\n", "A = DNAassembly(\"A\", promoter = \"P\",\n", " rbs = \"rbs\")\n", "E = EnergyTxTlExtract(components = [A],\n", " parameter_file = \"txtl_toolbox_parameters.txt\")\n", "\n", "CRN = E.compile_crn()\n", "\n", "print(CRN.pretty_print())\n", "try:\n", " maxtime = 30000\n", " timepoints = np.arange(0, maxtime, 100)\n", " # set mrna degradation resource \n", " x0_dict = {E.rnaase.get_species(): 0, A.dna: 1e-6}\n", " R = CRN.simulate_with_bioscrape_via_sbml(timepoints,\n", " initial_condition_dict=x0_dict)\n", " if R is not None:\n", " plt.subplot(121)\n", " plt.plot(timepoints, R[str(E.ntps.get_species())], label = E.ntps.get_species())\n", " plt.plot(timepoints, R[str(E.amino_acids.get_species())], label = E.amino_acids.get_species())\n", " plt.plot(timepoints, R[str(E.fuel.get_species())], label = E.fuel.get_species())\n", " plt.xticks(np.arange(0, maxtime, 3600), [str(i) for i in range(0, int(np.ceil(maxtime/3600)))])\n", " plt.legend()\n", " \n", " plt.subplot(122)\n", " plt.plot(timepoints, R[str(A.transcript)], label = A.transcript)\n", " plt.plot(timepoints, R[str(A.protein)], label = A.protein)\n", " plt.xticks(np.arange(0, maxtime, 3600), [str(i) for i in range(0, int(np.ceil(maxtime/3600)))])\n", " plt.legend()\n", "except ModuleNotFoundError:\n", " print('please install the plotting libraries: pip install biocrnpyler[all]')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "biocrnpyler.core.species.Species" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(A.dna)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[dna_A,\n", " protein_RNAP,\n", " rna_A,\n", " metabolite_NTPs,\n", " complex_dna_A_protein_RNAP_,\n", " metabolite_amino_acids,\n", " protein_Ribo,\n", " protein_A,\n", " complex_protein_Ribo_rna_A_,\n", " protein_RNAase,\n", " metabolite_Fuel_3PGA,\n", " metabolite_NDPs,\n", " complex_protein_RNAase_rna_A_,\n", " complex_complex_protein_Ribo_rna_A__protein_RNAase_]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CRN.species" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# End" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 4 }